<?php
/**
 * @ClassName: GenMpCodeUtil
 * @Description: TODO
 * @author: gydtrade
 * @Date: 2025-11-14 13:54
 * @Version: V1.0.0
 */

namespace app\common\utils;

use think\Db;
use think\Exception;

class GenMpCodeUtil extends GenQrcode
{
    /**
     * 获取会员推广码
     * @param $spreadCode
     * @param $path
     * @param $isLogo
     * @return array|string
     * @throws \think\db\exception\DataNotFoundException
     * @throws \think\db\exception\ModelNotFoundException
     * @throws \think\exception\DbException
     */
    public static function getMemberShareCode($spreadCode, $path = '/pages/index/index', $isLogo = true)
    {
        // 生成二维码内容
        $url = domain() . '/user' . $path;
//        $member_id = InvitationCodeUtil::decode($spreadCode);
        $member_id = $spreadCode;
        $member = Db::name('member')->where('id', $member_id)->find();
        if (!$member) {
            return ['coe' => 0, 'msg' => '会员信息不存在'];
        }

        $qrImg = null;
        // 生成二维码的文件名及路径
        $poster_name = $member_id . "_share" . ".png";
        $poster_dir = './share/member_share/';

        // 背景模板
        $res = self::getCard();
        var_dump($res);
        $card = $res["data"];

        // 背景模版转化成图像数据流
        $cardData = self::getImgData($card);
        $cardImg = $cardData["data"];

        // 生成二维码
        if (!$qrImg) {
            if (strpos($url, "?") > -1) {
                $qrCode_url = $url . '&invite_code=' . $spreadCode;
            } else {
                $qrCode_url = $url . '?invite_code=' . $spreadCode;
            }
            $res = self::makeQr($qrCode_url, $member, 'member', '', $isLogo);
            $qr = $res["data"];

            // 二维码路径转换图像数据流
            if ($qr) {
                $qrData = self::getImgData($qr);
                $qrImg = $qrData["data"];
            }
        }

        //合并图片(背景图，二维码，左边距（为0居中），上边距，边框，二维码大小）
        self::makeUpImg($cardImg, $qrImg, 0, 910, 0, 290);

        //添加文字（背景图，文字，字符截取长度，左边距（为0居中），上边距，文字大小）
        self::addFont_b($cardImg, '邀请码：' . $spreadCode, 40, 0, 882, 20);

        // 生成新图保存
        $url = self::newImg($cardImg, $poster_name, $poster_dir);

        return $url . '?time=' . time();
    }

    /**
     * 获取代理推广码
     * @param $member_id
     * @param $path
     * @param $isLogo
     * @return array|string
     * @throws \think\db\exception\DataNotFoundException
     * @throws \think\db\exception\ModelNotFoundException
     * @throws \think\exception\DbException
     */
    public static function getAgentShareCode($member_id, $path = '/pages/index/index', $isLogo = true)
    {
        // 生成二维码内容
        $url = domain() . '/user' . $path;
        $agent = Db::name('agent')->where('member_id', $member_id)->find();
        if (!$agent) {
            return ['coe' => 0, 'msg' => '代理信息不存在'];
        }

        $qrImg = null;
        // 生成二维码的文件名及路径
        $poster_name = $member_id . "_share" . ".png";
        $poster_dir = './share/member_share/';

        // 背景模板
        $res = self::getCard();
        $card = $res["data"];

        // 背景模版转化成图像数据流
        $cardData = self::getImgData($card);
        $cardImg = $cardData["data"];

        // 生成二维码
        if (!$qrImg) {
            if (strpos($url, "?") > -1) {
                $qrCode_url = $url . '&invite_code=' . $member_id;
            } else {
                $qrCode_url = $url . '?invite_code=' . $member_id;
            }
            $res = self::makeQr($qrCode_url, $agent, 'agent', '', $isLogo);
            $qr = $res["data"];

            // 二维码路径转换图像数据流
            if ($qr) {
                $qrData = self::getImgData($qr);
                $qrImg = $qrData["data"];
            }
        }

        //合并图片(背景图，二维码，左边距（为0居中），上边距，边框，二维码大小）
        self::makeUpImg($cardImg, $qrImg, 0, 910, 0, 290);

        //添加文字（背景图，文字，字符截取长度，左边距（为0居中），上边距，文字大小）
        self::addFont_b($cardImg, '邀请码：' . $member_id, 40, 0, 882, 20);

        // 生成新图保存
        $url = self::newImg($cardImg, $poster_name, $poster_dir);

        return $url . '?time=' . time();
    }

}